#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>

//1.法1 先排序 然后找
//class Solution {
//public:
//    template<class T>
//    struct Greater{
//        bool operator()(T x, T y){
//            return x > y;
//        }
//    };
//
//    int thirdMax(vector<int>& nums) {
//        //先排序 后找
//        sort(nums.begin(), nums.end(), Greater<int>());
//        int thirdMax = nums[0], times = 1;
//        for(int i = 1; i < nums.size(); ++i){
//            if(nums[i] != thirdMax){
//                times++;
//                thirdMax = nums[i];
//            }
//            if(times == 3) return nums[i];
//        }
//        return nums[0];
//    }
//};


//方法2 使用set
//class Solution {
//public:
//    int thirdMax(vector<int>& nums) {
//        set<int, greater<int>> s(nums.begin(), nums.end());
//        set<int>::iterator sit = s.begin();
//        int times = 1;
//        while(sit != s.end()){
//            if(times == 3) return *sit;
//            times++;
//            ++sit;
//        }
//        sit = s.begin();
//        return *sit;
//    }
//};



